package br.Tela;

import java.util.List;

import br.Entidade.Atividade;
import br.Repositorio.RepositorioAtividade;
import br.gradeManager.R;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView;

public class AtividadeActivity extends ListActivity {
	protected static final int INSERIR_EDITAR = 1;
	protected static final int HELP = 2;
	public static RepositorioAtividade repositorio;
	private List<Atividade> atividades;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle icicle) {
		super.onCreate(icicle);
		repositorio = new RepositorioAtividade(this);
		atualizarLista();
	}

	protected void atualizarLista() {
		// Pega a lista de atividades e exibe na tela
		atividades = repositorio.listarAtividades();
		// Adaptador de lista customizado para cada linha de uma disciplina
		setListAdapter(new AtividadeAdapter(this, atividades));
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// TODO Auto-generated method stub
		super.onCreateOptionsMenu(menu);
		menu.add(0, INSERIR_EDITAR, 0, "Inserir Atividade").setIcon(
				R.drawable.novo);
		menu.add(0, HELP, 0, "Ajuda").setIcon(R.drawable.icon);
		return true;
	}

	@Override
	public boolean onMenuItemSelected(int featureId, MenuItem item) {
		// TODO Auto-generated method stub
		// Clicou no menu
		switch (item.getItemId()) {
		case INSERIR_EDITAR:
			// Abre a tela com o formulario de adicionar
			startActivityForResult(new Intent(this,
					EditarAtividadeActivity.class), INSERIR_EDITAR);
			break;
		case HELP:
			// Abre a tela de Ajuda
			startActivity(new Intent(this, AjudaActivity.class));
			break;
		}
		return true;
	}

	protected void onListItemClick(ListView l, View v, int position, long id) {
		super.onListItemClick(l, v, position, id);
		editarAtividade(position);
	}

	// Recupera o id da atividade, e abre a tela de edicao
	protected void editarAtividade(int posicao) {
		// Usuario cliucou em alguma atividade da lista
		// Recupera a atividade selecionada
		Atividade atividade = atividades.get(posicao);
		// Cria a intent para abrir a tela de editar
		Intent it = new Intent(this, EditarAtividadeActivity.class);
		// Passa o id da atividade como parametro
		it.putExtra("id", atividade.id);
		// Abre a tela de edicao
		startActivityForResult(it, INSERIR_EDITAR);
	}

	protected void onActivityResult(int codigo, int codigoRetorno, Intent it) {
		super.onActivityResult(codigo, codigoRetorno, it);
		// Quando a activity EditarAtividade retornar, seja se foi para
		// adicionar, atualizar ou excluir
		// Vamos atualizar a lista
		if (codigoRetorno == RESULT_OK) {
			// atualiza a lista na tela
			atualizarLista();
		}
	}

	protected void onDestroy() {
		super.onDestroy();
		// Fecha o banco
		repositorio.fechar();
	}
}
